package com.justnow.offer;

import java.util.Scanner;

/**
 * @author justnow
 * Created on 2020-09-11
 * Description
 *
 * 验证密码复杂性是网站在用户输入初始密码后需要进行的一步操作。现在，小A的网站需要验证密码的复杂性，小A对一个足够复杂的密码拥有如下要求：
 *
 * 1.要有数字
 *
 * 2.要有大写字母
 *
 * 3.要有小写字母
 *
 * 4.要有特殊字符
 *
 * 5.长度不得小于8
 *
 * 现在给你密码，请你判断这个密码是否足够复杂
 *
 *
 *
 * 输入描述
 * 输入包含多组数据，对于每组数据，包含一个字符串S。
 *
 * 输出描述
 * 如果密码足够复杂，输出Ok，否则输出Irregular password。请注意输出的大小写。
 *
 *
 * 样例输入
 * 12_Aaqq12
 * Password123
 * PASSWORD_123
 * PaSS^word
 * 12_Aaqq
 * 样例输出
 * Ok
 * Irregular password
 * Irregular password
 * Irregular password
 * Irregular password
 *
 * 提示
 * 范围：|s|<=100，数据组数不会超过20
 * 样例解释：第二组密码没有特殊字符，第三组密码没有小写字母，第四组密码没有数字，第五组密码长度不够
 *
 *
 */
public class Solution_360_02 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            String result = isValid(scanner.nextLine());
            System.out.println(result);
        }
    }

    public static String isValid(String str) {
        if (str == null || str.equals(" "))
            return "Irregular password";
        int length = str.length();
        if (length <= 8 || length > 100) {
            return "Irregular password";
        }
        char[] chars = str.toCharArray();
        boolean allFlag = false;
        boolean hasNumber = false;
        boolean hasSmallChar = false;
        boolean hasBigChar = false;
        boolean hasOther = false;
        for (char aChar : chars) {
            if (aChar == ' ')
                return "Irregular password";
            if (hasBigChar && hasSmallChar && hasNumber && hasOther) {
                allFlag = true;
                break;
            }
            int temp = aChar - '0';
            if (temp >= 0 && temp <= 9)
                hasNumber = true;
            else if (temp >= 17 && temp <= 42)
                hasBigChar = true;
            else if (temp >= 49 && temp <= 74)
                hasSmallChar = true;
            else if (aChar == ' ')
                hasOther = false;
            else
                hasOther = true;
        }
        if (allFlag)
            return "Ok";
        return "Irregular password";
    }
}
